#pragma once

#include <memory>

#include "../Math/TransferFunction/TransferFunctionBase.h"

#include "../Math/Vector.h"
#include "../Math/Matrix.h"

class CRLSNeuron
{
public:
	CRLSNeuron() = delete;

	CRLSNeuron(int inputDimension);

public:
	virtual void SetWeight(const Vector & weight);
	virtual Vector GetWeight();

	virtual Vector GetLastWeight();

	virtual void SetLastPMatrix(const Matrix & P);
	virtual Matrix GetLastPMatrix();

	virtual double Execute(const Vector & inputData);

protected:
	Vector m_Weight;
	Vector m_LastWeight;

	Matrix m_LastPMatrix;
};